package com.gitee.qdbp.general.common.api.message.model;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import com.gitee.qdbp.general.common.enums.MessageState;
import com.gitee.qdbp.general.common.enums.MessageType;

/**
 * 系统消息查询类
 *
 * @author zhh
 * @version 170802
 */
public class SystemMessageWhere extends SystemMessageBean {

    /** 版本序列号 **/
    private static final long serialVersionUID = 1L;

    /** 消息ID列表 **/
    private List<String> ids;

    /** 消息ID前模匹配条件 **/
    private String idStarts;

    /** 消息ID后模匹配条件 **/
    private String idEnds;

    /** 消息ID模糊查询条件 **/
    private String idLike;

    /** 消息类型(0.通知)空值/非空值查询 **/
    private Boolean typeIsNull;

    /** 消息类型(0.通知)列表 **/
    private List<MessageType> types;

    /** 群组ID(两人对话时以双方的ID字符连接作为群组ID)空值/非空值查询 **/
    private Boolean groupIdIsNull;

    /** 群组ID(两人对话时以双方的ID字符连接作为群组ID)前模匹配条件 **/
    private String groupIdStarts;

    /** 群组ID(两人对话时以双方的ID字符连接作为群组ID)后模匹配条件 **/
    private String groupIdEnds;

    /** 群组ID(两人对话时以双方的ID字符连接作为群组ID)模糊查询条件 **/
    private String groupIdLike;

    /** 发送人ID空值/非空值查询 **/
    private Boolean senderIdIsNull;

    /** 最小发送人ID **/
    private Integer senderIdMin;

    /** 最大发送人ID **/
    private Integer senderIdMax;

    /** 发送时间空值/非空值查询 **/
    private Boolean sendTimeIsNull;

    /** 最小发送时间 **/
    private Date sendTimeMin;

    /** 最大发送时间 **/
    private Date sendTimeMax;

    /** 最小发送时间 **/
    private Date sendTimeMinWithDay;

    /** 最大发送时间 **/
    private Date sendTimeMaxWithDay;

    /** 接收人ID空值/非空值查询 **/
    private Boolean receiverIdIsNull;

    /** 最小接收人ID **/
    private Integer receiverIdMin;

    /** 最大接收人ID **/
    private Integer receiverIdMax;

    /** 标题空值/非空值查询 **/
    private Boolean titleIsNull;

    /** 标题前模匹配条件 **/
    private String titleStarts;

    /** 标题后模匹配条件 **/
    private String titleEnds;

    /** 标题模糊查询条件 **/
    private String titleLike;

    /** 内容空值/非空值查询 **/
    private Boolean contentIsNull;

    /** 内容前模匹配条件 **/
    private String contentStarts;

    /** 内容后模匹配条件 **/
    private String contentEnds;

    /** 内容模糊查询条件 **/
    private String contentLike;

    /** 读取时间空值/非空值查询 **/
    private Boolean readTimeIsNull;

    /** 最小读取时间 **/
    private Date readTimeMin;

    /** 最大读取时间 **/
    private Date readTimeMax;

    /** 最小读取时间 **/
    private Date readTimeMinWithDay;

    /** 最大读取时间 **/
    private Date readTimeMaxWithDay;

    /** 状态(0.未读|1.已读)空值/非空值查询 **/
    private Boolean readStateIsNull;

    /** 状态(0.未读|1.已读)列表 **/
    private List<MessageState> readStates;

    /** 选项空值/非空值查询 **/
    private Boolean optionsIsNull;


    /** 获取消息ID列表 **/
    public List<String> getIds() {
        return ids;
    }

    /** 设置消息ID列表 **/
    public void setIds(List<String> ids) {
        this.ids = ids;
    }

    /** 增加消息ID **/
    public void addId(String... ids) {
        if (this.ids == null) {
            this.ids = new ArrayList<>();
        }
        this.ids.addAll(Arrays.asList(ids));
    }

    /** 获取消息ID前模匹配条件 **/
    public String getIdStarts() {
        return idStarts;
    }

    /** 设置消息ID前模匹配条件 **/
    public void setIdStarts(String idStarts) {
        this.idStarts = idStarts;
    }

    /** 获取消息ID后模匹配条件 **/
    public String getIdEnds() {
        return idEnds;
    }

    /** 设置消息ID后模匹配条件 **/
    public void setIdEnds(String idEnds) {
        this.idEnds = idEnds;
    }

    /** 获取消息ID模糊查询条件 **/
    public String getIdLike() {
        return idLike;
    }

    /** 设置消息ID模糊查询条件 **/
    public void setIdLike(String idLike) {
        this.idLike = idLike;
    }

    /** 判断消息类型(0.通知)是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getTypeIsNull() {
        return typeIsNull;
    }

    /**
     * 设置消息类型(0.通知)空值查询(true:空值查询|false:非空值查询)
     *
     * @param typeIsNull 消息类型(0.通知)空值查询
     * @deprecated 该字段为非空字段
     */
    @Deprecated
    public void setTypeIsNull(Boolean typeIsNull) {
        this.typeIsNull = typeIsNull;
    }

    /** 获取消息类型(0.通知)列表 **/
    public List<MessageType> getTypes() {
        return types;
    }

    /** 设置消息类型(0.通知)列表 **/
    public void setTypes(List<MessageType> types) {
        this.types = types;
    }

    /** 增加消息类型(0.通知) **/
    public void addType(MessageType... types) {
        if (this.types == null) {
            this.types = new ArrayList<>();
        }
        this.types.addAll(Arrays.asList(types));
    }

    /** 判断群组ID(两人对话时以双方的ID字符连接作为群组ID)是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getGroupIdIsNull() {
        return groupIdIsNull;
    }

    /**
     * 设置群组ID(两人对话时以双方的ID字符连接作为群组ID)空值查询(true:空值查询|false:非空值查询)
     *
     * @param groupIdIsNull 群组ID(两人对话时以双方的ID字符连接作为群组ID)空值查询
     * @deprecated 该字段为非空字段
     */
    @Deprecated
    public void setGroupIdIsNull(Boolean groupIdIsNull) {
        this.groupIdIsNull = groupIdIsNull;
    }

    /** 获取群组ID(两人对话时以双方的ID字符连接作为群组ID)前模匹配条件 **/
    public String getGroupIdStarts() {
        return groupIdStarts;
    }

    /** 设置群组ID(两人对话时以双方的ID字符连接作为群组ID)前模匹配条件 **/
    public void setGroupIdStarts(String groupIdStarts) {
        this.groupIdStarts = groupIdStarts;
    }

    /** 获取群组ID(两人对话时以双方的ID字符连接作为群组ID)后模匹配条件 **/
    public String getGroupIdEnds() {
        return groupIdEnds;
    }

    /** 设置群组ID(两人对话时以双方的ID字符连接作为群组ID)后模匹配条件 **/
    public void setGroupIdEnds(String groupIdEnds) {
        this.groupIdEnds = groupIdEnds;
    }

    /** 获取群组ID(两人对话时以双方的ID字符连接作为群组ID)模糊查询条件 **/
    public String getGroupIdLike() {
        return groupIdLike;
    }

    /** 设置群组ID(两人对话时以双方的ID字符连接作为群组ID)模糊查询条件 **/
    public void setGroupIdLike(String groupIdLike) {
        this.groupIdLike = groupIdLike;
    }

    /** 判断发送人ID是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getSenderIdIsNull() {
        return senderIdIsNull;
    }

    /** 设置发送人ID空值查询(true:空值查询|false:非空值查询) **/
    public void setSenderIdIsNull(Boolean senderIdIsNull) {
        this.senderIdIsNull = senderIdIsNull;
    }

    /** 获取最小发送人ID **/
    public Integer getSenderIdMin() {
        return senderIdMin;
    }

    /** 设置最小发送人ID **/
    public void setSenderIdMin(Integer senderIdMin) {
        this.senderIdMin = senderIdMin;
    }

    /** 获取最大发送人ID **/
    public Integer getSenderIdMax() {
        return senderIdMax;
    }

    /** 设置最大发送人ID **/
    public void setSenderIdMax(Integer senderIdMax) {
        this.senderIdMax = senderIdMax;
    }

    /** 判断发送时间是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getSendTimeIsNull() {
        return sendTimeIsNull;
    }

    /**
     * 设置发送时间空值查询(true:空值查询|false:非空值查询)
     *
     * @param sendTimeIsNull 发送时间空值查询
     * @deprecated 该字段为非空字段
     */
    @Deprecated
    public void setSendTimeIsNull(Boolean sendTimeIsNull) {
        this.sendTimeIsNull = sendTimeIsNull;
    }

    /** 获取最小发送时间 **/
    public Date getSendTimeMin() {
        return sendTimeMin;
    }

    /** 设置最小发送时间 **/
    public void setSendTimeMin(Date sendTimeMin) {
        this.sendTimeMin = sendTimeMin;
    }

    /** 获取最大发送时间 **/
    public Date getSendTimeMax() {
        return sendTimeMax;
    }

    /** 设置最大发送时间 **/
    public void setSendTimeMax(Date sendTimeMax) {
        this.sendTimeMax = sendTimeMax;
    }

    /** 获取最小发送时间 **/
    public Date getSendTimeMinWithDay() {
        return sendTimeMinWithDay;
    }

    /** 设置最小发送时间 **/
    public void setSendTimeMinWithDay(Date sendTimeMinWithDay) {
        this.sendTimeMinWithDay = sendTimeMinWithDay;
    }

    /** 获取最大发送时间 **/
    public Date getSendTimeMaxWithDay() {
        return sendTimeMaxWithDay;
    }

    /** 设置最大发送时间 **/
    public void setSendTimeMaxWithDay(Date sendTimeMaxWithDay) {
        this.sendTimeMaxWithDay = sendTimeMaxWithDay;
    }

    /** 判断接收人ID是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getReceiverIdIsNull() {
        return receiverIdIsNull;
    }

    /**
     * 设置接收人ID空值查询(true:空值查询|false:非空值查询)
     *
     * @param receiverIdIsNull 接收人ID空值查询
     * @deprecated 该字段为非空字段
     */
    @Deprecated
    public void setReceiverIdIsNull(Boolean receiverIdIsNull) {
        this.receiverIdIsNull = receiverIdIsNull;
    }

    /** 获取最小接收人ID **/
    public Integer getReceiverIdMin() {
        return receiverIdMin;
    }

    /** 设置最小接收人ID **/
    public void setReceiverIdMin(Integer receiverIdMin) {
        this.receiverIdMin = receiverIdMin;
    }

    /** 获取最大接收人ID **/
    public Integer getReceiverIdMax() {
        return receiverIdMax;
    }

    /** 设置最大接收人ID **/
    public void setReceiverIdMax(Integer receiverIdMax) {
        this.receiverIdMax = receiverIdMax;
    }

    /** 判断标题是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getTitleIsNull() {
        return titleIsNull;
    }

    /**
     * 设置标题空值查询(true:空值查询|false:非空值查询)
     *
     * @param titleIsNull 标题空值查询
     * @deprecated 该字段为非空字段
     */
    @Deprecated
    public void setTitleIsNull(Boolean titleIsNull) {
        this.titleIsNull = titleIsNull;
    }

    /** 获取标题前模匹配条件 **/
    public String getTitleStarts() {
        return titleStarts;
    }

    /** 设置标题前模匹配条件 **/
    public void setTitleStarts(String titleStarts) {
        this.titleStarts = titleStarts;
    }

    /** 获取标题后模匹配条件 **/
    public String getTitleEnds() {
        return titleEnds;
    }

    /** 设置标题后模匹配条件 **/
    public void setTitleEnds(String titleEnds) {
        this.titleEnds = titleEnds;
    }

    /** 获取标题模糊查询条件 **/
    public String getTitleLike() {
        return titleLike;
    }

    /** 设置标题模糊查询条件 **/
    public void setTitleLike(String titleLike) {
        this.titleLike = titleLike;
    }

    /** 判断内容是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getContentIsNull() {
        return contentIsNull;
    }

    /** 设置内容空值查询(true:空值查询|false:非空值查询) **/
    public void setContentIsNull(Boolean contentIsNull) {
        this.contentIsNull = contentIsNull;
    }

    /** 获取内容前模匹配条件 **/
    public String getContentStarts() {
        return contentStarts;
    }

    /** 设置内容前模匹配条件 **/
    public void setContentStarts(String contentStarts) {
        this.contentStarts = contentStarts;
    }

    /** 获取内容后模匹配条件 **/
    public String getContentEnds() {
        return contentEnds;
    }

    /** 设置内容后模匹配条件 **/
    public void setContentEnds(String contentEnds) {
        this.contentEnds = contentEnds;
    }

    /** 获取内容模糊查询条件 **/
    public String getContentLike() {
        return contentLike;
    }

    /** 设置内容模糊查询条件 **/
    public void setContentLike(String contentLike) {
        this.contentLike = contentLike;
    }

    /** 判断读取时间是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getReadTimeIsNull() {
        return readTimeIsNull;
    }

    /** 设置读取时间空值查询(true:空值查询|false:非空值查询) **/
    public void setReadTimeIsNull(Boolean readTimeIsNull) {
        this.readTimeIsNull = readTimeIsNull;
    }

    /** 获取最小读取时间 **/
    public Date getReadTimeMin() {
        return readTimeMin;
    }

    /** 设置最小读取时间 **/
    public void setReadTimeMin(Date readTimeMin) {
        this.readTimeMin = readTimeMin;
    }

    /** 获取最大读取时间 **/
    public Date getReadTimeMax() {
        return readTimeMax;
    }

    /** 设置最大读取时间 **/
    public void setReadTimeMax(Date readTimeMax) {
        this.readTimeMax = readTimeMax;
    }

    /** 获取最小读取时间 **/
    public Date getReadTimeMinWithDay() {
        return readTimeMinWithDay;
    }

    /** 设置最小读取时间 **/
    public void setReadTimeMinWithDay(Date readTimeMinWithDay) {
        this.readTimeMinWithDay = readTimeMinWithDay;
    }

    /** 获取最大读取时间 **/
    public Date getReadTimeMaxWithDay() {
        return readTimeMaxWithDay;
    }

    /** 设置最大读取时间 **/
    public void setReadTimeMaxWithDay(Date readTimeMaxWithDay) {
        this.readTimeMaxWithDay = readTimeMaxWithDay;
    }

    /** 判断状态(0.未读|1.已读)是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getReadStateIsNull() {
        return readStateIsNull;
    }

    /**
     * 设置状态(0.未读|1.已读)空值查询(true:空值查询|false:非空值查询)
     *
     * @param readStateIsNull 状态(0.未读|1.已读)空值查询
     * @deprecated 该字段为非空字段
     */
    @Deprecated
    public void setReadStateIsNull(Boolean readStateIsNull) {
        this.readStateIsNull = readStateIsNull;
    }

    /** 获取状态(0.未读|1.已读)列表 **/
    public List<MessageState> getReadStates() {
        return readStates;
    }

    /** 设置状态(0.未读|1.已读)列表 **/
    public void setReadStates(List<MessageState> readStates) {
        this.readStates = readStates;
    }

    /** 增加状态(0.未读|1.已读) **/
    public void addReadState(MessageState... readStates) {
        if (this.readStates == null) {
            this.readStates = new ArrayList<>();
        }
        this.readStates.addAll(Arrays.asList(readStates));
    }

    /** 判断选项是否为空值查询(true:空值查询|false:非空值查询) **/
    public Boolean getOptionsIsNull() {
        return optionsIsNull;
    }

    /** 设置选项空值查询(true:空值查询|false:非空值查询) **/
    public void setOptionsIsNull(Boolean optionsIsNull) {
        this.optionsIsNull = optionsIsNull;
    }

}